{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 1. Pandas"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.1 Pandas介绍\n",
    "Pandas 是 Python 语言的一个扩展程序库，用于数据分析。    \n",
    "Pandas 一个强大的分析结构化数据的工具集，基础是 Numpy（提供高性能的矩阵运算）。    \n",
    "\n",
    "Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据。   \n",
    "Pandas 可以对各种数据进行运算操作，比如归并、再成形、选择，还有数据清洗和数据加工特征。   \n",
    "Pandas 广泛应用在学术、金融、统计学等各个数据分析领域。   \n",
    "    \n",
    "参考：    \n",
    "http://c.biancheng.net/pandas/\n",
    "https://www.runoob.com/pandas/pandas-tutorial.html"
   ]
  },
  {
   "attachments": {
    "154931A54-0.gif": {
     "image/gif": "R0lGODlhcgItAfcAAAAAAP7693S/4MbgtP8AAMrb31ubz/CVWL6+xry8vPjOse19Mf9NTXGa0v+2tv9aWvbBnf8zM/OmctXC1Ya+zuXk5Pzr3/95efnWvnKv1rTG57LDxVuhy/8cHJql1fa7lL6zzv+WlpPByffOttra2O+KReHg36ms1f3z7G2vyMa/zqDT3/rey22b1bbf34C3x67W1/8QEIqb1fSxg9fW1/9paf+np/+JiYrC297d3v9BQf/Hx8jJzsXGx1uj0/3w59LS0/+ysv/X15vL1rOw0vKeZf8kJP///+6COZ7Q2/8ICIrI39vF16vR0nCb1fzn2P9mZv+Cgv+fn/7384+6wv9RUVuu1fCRUf+6usa50XO824Kb1fOqeaXHycbIyd7e24+h1fW3jcu+1//MzM7G0v90dMG7zP/f3//r6/fIqYmm1f85OVumxobC1tzX2/+Skn6b1frbxv+urrXHyf8VFf9ISN/f31ub16LDxf9hYfGZXdjO1//z89PK1G+zzs7j4+6FPf++vuTj47q01Pvh0MPExv8oKKGn1bKv0v/n53C20r7R0tvb2//39/bAm+TM2szMzPfHpsHCyv/v7++OTMa611um11ub0rfi4ouvyPSuf8LCwv+Zmf8fH6PX4/9VVf9FRVupyluy2/+iopaj1fKhav8MDP/j4//MzP/c3P+Ojv9dXca2zpzO2cbHyf+qqvO6kuLW2+DU2/OndP+GhvrYwnGyzv88PP8EBM7P0P8XF+Pj2/9tbc7A1+2ANW6xysrD0P8tLVuizszMzPnTufW1iv/Cwv/7+4rJ37Wy1a6t0vfKrvGbYIab1fzo26Oq1fCTVYS/0eTj3qHV4OuCPbvNzrPb3Pa+mN/b28rf3/vfzf8zM9TU1f9/f7LExsK+yv/T077Cxe+LSP707vv396bJy56n1ffbyrnj4/Opdu6GQPvj04nG3PSvgVul1G2yxsi60V2myovL4sq618PDxczMzO+WXXG51lurz++ibZKi1fnSt/Szhlun2/fEop7S2yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPkFkb2JlIEZpcmV3b3JrcyBDUzYgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDIxLTA4LTExVDA4OjM4OjMxWjwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDIxLTA4LTExVDA4OjM5OjUwWjwveG1wOk1vZGlmeURhdGU+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL2dpZjwvZGM6Zm9ybWF0PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.2 数据结构\n",
    "1. Series 是一种类似于一维数组的对象，它由一组数据（各种Numpy数据类型）以及一组与之相关的数据标签（即索引）组成。     \n",
    "2. DataFrame 是一个表格型的数据结构，它含有一组有序的列，每列可以是不同的值类型（数值、字符串、布尔型值）。DataFrame 既有行索引也有列索引，它可以被看做由 Series 组成的字典（共同用一个索引）。\n",
    "\n",
    "![154931A54-0.gif](attachment:154931A54-0.gif)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.2.1 Series\n",
    "关于 创建对象时 的index   \n",
    "1. 如果没有指定索引，索引值就从 0 开始，即可以根据索引值读取数据\n",
    "2. 可以指定索引值\n",
    "3. 也可以使用 key/value 对象，类似字典来创建 Series"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x    Google\n",
      "y    Runoob\n",
      "z      Wiki\n",
      "dtype: object\n",
      "Runoob\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "a = [\"Google\", \"Runoob\", \"Wiki\"]\n",
    "myvar = pd.Series(a, index = [\"x\", \"y\", \"z\"])\n",
    "print(myvar)\n",
    "print(myvar[\"y\"])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "访问Series数据\n",
    "1. 位置索引访问\n",
    "这种访问方式与 ndarray 和 list 相同，使用元素自身的下标进行访问。我们知道数组的索引计数从 0 开始，这表示第一个元素存储在第 0 个索引位置上，以此类推，就可以获得 Series 序列中的每个元素。也可以通过切片的方式访问 Series 序列中的数据。\n",
    "2. Series 类似于固定大小的 dict，把 index 中的索引标签当做 key，而把 Series 序列中的元素值当做 value，然后通过 index 索引标签来访问或者修改元素值。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "x    Google\n",
       "y    Runoob\n",
       "dtype: object"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "myvar[0:2]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.2.2 DataFrame\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Name</th>\n",
       "      <th>Age</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Alex</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Bob</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Clarke</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     Name  Age\n",
       "0    Alex   10\n",
       "1     Bob   12\n",
       "2  Clarke   13"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 创建对象\n",
    "# 思考：如果data是一个Json格式数据怎么办？\n",
    "data = [['Alex',10],['Bob',12],['Clarke',13]]\n",
    "df = pd.DataFrame(data,columns=['Name','Age'])\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>rank1</th>\n",
       "      <td>Alex</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>rank2</th>\n",
       "      <td>Bob</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>rank3</th>\n",
       "      <td>Clarke</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            0   1\n",
       "rank1    Alex  10\n",
       "rank2     Bob  12\n",
       "rank3  Clarke  13"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 索引问题\n",
    "df = pd.DataFrame(data, index=['rank1','rank2','rank3'])\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.3 读取数据文件"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Name</th>\n",
       "      <th>Team</th>\n",
       "      <th>Number</th>\n",
       "      <th>Position</th>\n",
       "      <th>Age</th>\n",
       "      <th>Height</th>\n",
       "      <th>Weight</th>\n",
       "      <th>College</th>\n",
       "      <th>Salary</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Avery Bradley</td>\n",
       "      <td>Boston Celtics</td>\n",
       "      <td>0.0</td>\n",
       "      <td>PG</td>\n",
       "      <td>25.0</td>\n",
       "      <td>6-2</td>\n",
       "      <td>180.0</td>\n",
       "      <td>Texas</td>\n",
       "      <td>7730337.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Jae Crowder</td>\n",
       "      <td>Boston Celtics</td>\n",
       "      <td>99.0</td>\n",
       "      <td>SF</td>\n",
       "      <td>25.0</td>\n",
       "      <td>6-6</td>\n",
       "      <td>235.0</td>\n",
       "      <td>Marquette</td>\n",
       "      <td>6796117.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>John Holland</td>\n",
       "      <td>Boston Celtics</td>\n",
       "      <td>30.0</td>\n",
       "      <td>SG</td>\n",
       "      <td>27.0</td>\n",
       "      <td>6-5</td>\n",
       "      <td>205.0</td>\n",
       "      <td>Boston University</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>R.J. Hunter</td>\n",
       "      <td>Boston Celtics</td>\n",
       "      <td>28.0</td>\n",
       "      <td>SG</td>\n",
       "      <td>22.0</td>\n",
       "      <td>6-5</td>\n",
       "      <td>185.0</td>\n",
       "      <td>Georgia State</td>\n",
       "      <td>1148640.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Jonas Jerebko</td>\n",
       "      <td>Boston Celtics</td>\n",
       "      <td>8.0</td>\n",
       "      <td>PF</td>\n",
       "      <td>29.0</td>\n",
       "      <td>6-10</td>\n",
       "      <td>231.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5000000.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>453</th>\n",
       "      <td>Shelvin Mack</td>\n",
       "      <td>Utah Jazz</td>\n",
       "      <td>8.0</td>\n",
       "      <td>PG</td>\n",
       "      <td>26.0</td>\n",
       "      <td>6-3</td>\n",
       "      <td>203.0</td>\n",
       "      <td>Butler</td>\n",
       "      <td>2433333.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>454</th>\n",
       "      <td>Raul Neto</td>\n",
       "      <td>Utah Jazz</td>\n",
       "      <td>25.0</td>\n",
       "      <td>PG</td>\n",
       "      <td>24.0</td>\n",
       "      <td>6-1</td>\n",
       "      <td>179.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>900000.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>455</th>\n",
       "      <td>Tibor Pleiss</td>\n",
       "      <td>Utah Jazz</td>\n",
       "      <td>21.0</td>\n",
       "      <td>C</td>\n",
       "      <td>26.0</td>\n",
       "      <td>7-3</td>\n",
       "      <td>256.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2900000.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>456</th>\n",
       "      <td>Jeff Withey</td>\n",
       "      <td>Utah Jazz</td>\n",
       "      <td>24.0</td>\n",
       "      <td>C</td>\n",
       "      <td>26.0</td>\n",
       "      <td>7-0</td>\n",
       "      <td>231.0</td>\n",
       "      <td>Kansas</td>\n",
       "      <td>947276.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>457</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>458 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "              Name            Team  Number Position   Age Height  Weight  \\\n",
       "0    Avery Bradley  Boston Celtics     0.0       PG  25.0    6-2   180.0   \n",
       "1      Jae Crowder  Boston Celtics    99.0       SF  25.0    6-6   235.0   \n",
       "2     John Holland  Boston Celtics    30.0       SG  27.0    6-5   205.0   \n",
       "3      R.J. Hunter  Boston Celtics    28.0       SG  22.0    6-5   185.0   \n",
       "4    Jonas Jerebko  Boston Celtics     8.0       PF  29.0   6-10   231.0   \n",
       "..             ...             ...     ...      ...   ...    ...     ...   \n",
       "453   Shelvin Mack       Utah Jazz     8.0       PG  26.0    6-3   203.0   \n",
       "454      Raul Neto       Utah Jazz    25.0       PG  24.0    6-1   179.0   \n",
       "455   Tibor Pleiss       Utah Jazz    21.0        C  26.0    7-3   256.0   \n",
       "456    Jeff Withey       Utah Jazz    24.0        C  26.0    7-0   231.0   \n",
       "457            NaN             NaN     NaN      NaN   NaN    NaN     NaN   \n",
       "\n",
       "               College     Salary  \n",
       "0                Texas  7730337.0  \n",
       "1            Marquette  6796117.0  \n",
       "2    Boston University        NaN  \n",
       "3        Georgia State  1148640.0  \n",
       "4                  NaN  5000000.0  \n",
       "..                 ...        ...  \n",
       "453             Butler  2433333.0  \n",
       "454                NaN   900000.0  \n",
       "455                NaN  2900000.0  \n",
       "456             Kansas   947276.0  \n",
       "457                NaN        NaN  \n",
       "\n",
       "[458 rows x 9 columns]"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "df = pd.read_csv('./data/nba.csv')\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 458 entries, 0 to 457\n",
      "Data columns (total 9 columns):\n",
      " #   Column    Non-Null Count  Dtype  \n",
      "---  ------    --------------  -----  \n",
      " 0   Name      457 non-null    object \n",
      " 1   Team      457 non-null    object \n",
      " 2   Number    457 non-null    float64\n",
      " 3   Position  457 non-null    object \n",
      " 4   Age       457 non-null    float64\n",
      " 5   Height    457 non-null    object \n",
      " 6   Weight    457 non-null    float64\n",
      " 7   College   373 non-null    object \n",
      " 8   Salary    446 non-null    float64\n",
      "dtypes: float64(4), object(5)\n",
      "memory usage: 32.3+ KB\n"
     ]
    }
   ],
   "source": [
    "# tail(),head()\n",
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.4 数据处理"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.4.1 列索引操作DataFrame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>one</th>\n",
       "      <th>two</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>a</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>b</th>\n",
       "      <td>2.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>c</th>\n",
       "      <td>3.0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d</th>\n",
       "      <td>NaN</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   one  two\n",
       "a  1.0    1\n",
       "b  2.0    2\n",
       "c  3.0    3\n",
       "d  NaN    4"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = {'one': pd.Series([1, 2, 3], index = ['a', 'b', 'c']),\n",
    "   'two': pd.Series([1, 2, 3, 4], index = ['a', 'b', 'c', 'd'])}\n",
    "df = pd.DataFrame(d)\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--------增--------\n",
      "   one  two  three\n",
      "a  1.0    1   10.0\n",
      "b  2.0    2   20.0\n",
      "c  3.0    3   30.0\n",
      "d  NaN    4    NaN\n",
      "--------改--------\n",
      "   one  two  three  four\n",
      "a  1.0    1   10.0  11.0\n",
      "b  2.0    2   20.0  22.0\n",
      "c  3.0    3   30.0  33.0\n",
      "d  NaN    4    NaN   NaN\n",
      "--------删--------\n",
      "   two  three  four\n",
      "a    1   10.0  11.0\n",
      "b    2   20.0  22.0\n",
      "c    3   30.0  33.0\n",
      "d    4    NaN   NaN\n"
     ]
    }
   ],
   "source": [
    "# 列标签——>增删改查\n",
    "# 使用df['列']=值，插入新的数据列\n",
    "df['three'] = pd.Series([10,20,30],index=['a','b','c'])\n",
    "print(\"--------增--------\")\n",
    "print(df)\n",
    "# 将已经存在的数据列做相加运算\n",
    "df['four'] = df['one'] + df['three']\n",
    "print(\"--------改--------\")\n",
    "print(df)\n",
    "# 使用del删除\n",
    "del df['one']\n",
    "print(\"--------删--------\")\n",
    "print(df)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "其他常用方法：\n",
    "1. df.insert(1,column='score',value=[91,90,75]) 数值1代表插入到columns列表的索引位置。\n",
    "2. 通过 del 和 pop() 都能够删除 DataFrame 中的数据列。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.4.2 行索引操作DataFrame"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1. 标签索引选取：可以将行标签传递给 loc 函数，来选取数据。    \n",
    "注意：loc 允许接两个参数分别是行和列，参数之间需要使用“逗号”隔开，但该函数只能接收标签索引    \n",
    "df.iloc[] 只能使用整数索引，不能使用标签索引，通过整数索引切片选择数据时，前闭后开(不包含边界结束值)。\n",
    "2. 整数索引选取：通过将数据行所在的索引位置传递给 iloc 函数，也可以实现数据行选取。\n",
    "3. 切片操作多行选取：可以使用切片的方式同时选取多行。\n",
    "4. 添加数据行：使用 append() 函数，可以将新的数据行添加到 DataFrame 中，该函数会在行末追加数据行。\n",
    "5. 删除数据行：可以使用行索引标签，从 DataFrame 中删除某一行数据。如果索引标签存在重复，那么它们将被一起删除。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   one  two\n",
      "c  3.0    3\n",
      "d  NaN    4\n"
     ]
    }
   ],
   "source": [
    "data = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),\n",
    "   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}\n",
    "\n",
    "df = pd.DataFrame(d)\n",
    "# 左闭右开\n",
    "print(df[2:4])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.4.3 数据清洗"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1. 清洗空值\n",
    "2. fillna() 方法来替换一些空字段  \n",
    "替换空单元格的常用方法是计算列的均值、中位数值或众数。Pandas使用 mean()、median() 和 mode() 方法计算列的均值（所有值加起来的平均值）、中位数值（排序后排在中间的数）和众数（出现频率最高的数）。   \n",
    "3. 清洗格式错误数据\n",
    "4. 清洗错误数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 如果我们要删除包含空字段的行，可以使用 dropna() 方法\n",
    "# 语法格式：DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 可以指定空数据类型\n",
    "missing_values = [\"n/a\", \"na\", \"--\"]\n",
    "df = pd.read_csv('property-data.csv', na_values = missing_values)\n",
    "\n",
    "print (df['NUM_BEDROOMS'])\n",
    "print (df['NUM_BEDROOMS'].isnull())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.4.4 函数操作"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "统计函数    \n",
    "Pandas 的本质是统计学原理在计算机领域的一种应用实现，通过编程的方式达到分析、描述数据的目的。而统计函数则是统计学中用于计算和分析数据的一种工具。在数据分析的过程中，使用统计函数有助于我们理解和分析数据。本节将学习几个常见的统计函数，比如百分比函数、协方差函数、相关系数等。\n",
    "\n",
    " \n",
    "窗口函数   \n",
    "为了能更好地处理数值型数据，Pandas 提供了几种窗口函数，比如移动函数（rolling）、扩展函数（expanding）和指数加权函数（ewm）。\n",
    "窗口函数应用场景非常多。举一个简单的例子：现在有 10 天的销售额，而您想每 3 天求一次销售总和，也就说第五天的销售额等于（第三天 + 第四天 + 第五天）的销售额之和，此时窗口函数就派上用场了。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "聚合函数   \n",
    "聚合函数指的是对一组数据求总和、最大值、最小值以及平均值的操作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-12-14</th>\n",
       "      <td>1.314879</td>\n",
       "      <td>-0.513290</td>\n",
       "      <td>-1.286504</td>\n",
       "      <td>-0.206495</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-15</th>\n",
       "      <td>-0.400095</td>\n",
       "      <td>-0.129834</td>\n",
       "      <td>0.381195</td>\n",
       "      <td>0.571482</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-16</th>\n",
       "      <td>-0.289743</td>\n",
       "      <td>1.082096</td>\n",
       "      <td>1.189137</td>\n",
       "      <td>-0.359503</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-17</th>\n",
       "      <td>0.228124</td>\n",
       "      <td>0.469990</td>\n",
       "      <td>-0.395959</td>\n",
       "      <td>0.037210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-18</th>\n",
       "      <td>-1.774345</td>\n",
       "      <td>-0.224784</td>\n",
       "      <td>0.205429</td>\n",
       "      <td>0.991809</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C         D\n",
       "2020-12-14  1.314879 -0.513290 -1.286504 -0.206495\n",
       "2020-12-15 -0.400095 -0.129834  0.381195  0.571482\n",
       "2020-12-16 -0.289743  1.082096  1.189137 -0.359503\n",
       "2020-12-17  0.228124  0.469990 -0.395959  0.037210\n",
       "2020-12-18 -1.774345 -0.224784  0.205429  0.991809"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 对多列数据聚合\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "df = pd.DataFrame(np.random.randn(5, 4),index = pd.date_range('12/14/2020', periods=5),columns = ['A', 'B', 'C', 'D'])\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-12-14</th>\n",
       "      <td>1.314879</td>\n",
       "      <td>-0.513290</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-15</th>\n",
       "      <td>0.914785</td>\n",
       "      <td>-0.643124</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-16</th>\n",
       "      <td>0.625042</td>\n",
       "      <td>0.438973</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-17</th>\n",
       "      <td>-0.461714</td>\n",
       "      <td>1.422253</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-18</th>\n",
       "      <td>-1.835964</td>\n",
       "      <td>1.327303</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B\n",
       "2020-12-14  1.314879 -0.513290\n",
       "2020-12-15  0.914785 -0.643124\n",
       "2020-12-16  0.625042  0.438973\n",
       "2020-12-17 -0.461714  1.422253\n",
       "2020-12-18 -1.835964  1.327303"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 窗口大小为3，min_periods 最小观测值为1\n",
    "r = df.rolling(window=3,min_periods=1)\n",
    "#对 A/B 两列聚合\n",
    "r['A','B'].aggregate(np.sum)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "分组操作    \n",
    "根据某一列（或多列）标签把数据划分为不同的组别，然后再对其进行数据分析。比如，某网站对注册用户的性别或者年龄等进行分组，从而研究出网站用户的画像（特点）。    \n",
    "\n",
    "\n",
    "\n",
    "在划分出来的组（group）上应用一些统计函数，从而达到数据分析的目的，比如对分组数据进行聚合、转换，或者过滤。这个过程主要包含以下三步：   \n",
    "1. 拆分（Spliting）：表示对数据进行分组；\n",
    "2. 应用（Applying）：对分组数据应用聚合函数，进行相应计算；\n",
    "3. 合并（Combining）：最后汇总计算结果。\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>score</th>\n",
       "      <th>option_course</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>John</td>\n",
       "      <td>82</td>\n",
       "      <td>C#</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Helen</td>\n",
       "      <td>98</td>\n",
       "      <td>Python</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>John</td>\n",
       "      <td>91</td>\n",
       "      <td>Java</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Helen</td>\n",
       "      <td>87</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    name  score option_course\n",
       "0   John     82            C#\n",
       "1  Helen     98        Python\n",
       "2   John     91          Java\n",
       "3  Helen     87             C"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd \n",
    "import numpy as np \n",
    "data = {'name': ['John', 'Helen', 'John', 'Helen'], \n",
    "   'score': [82, 98, 91, 87], \n",
    "   'option_course': ['C#','Python','Java','C']} \n",
    "df = pd.DataFrame(data)\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "name\n",
       "Helen    92.5\n",
       "John     86.5\n",
       "Name: score, dtype: float64"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grouped=df.groupby('name')\n",
    "# 应用一个聚合函数求均值\n",
    "(grouped['score']).agg(np.mean)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: './data/nba.xls'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-54-8ec2007f1827>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdf\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mpd\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mread_excel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"./data/nba.xls\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      2\u001b[0m \u001b[0mdf\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\application\\Anaconda3\\envs\\torch\\lib\\site-packages\\pandas\\util\\_decorators.py\u001b[0m in \u001b[0;36mwrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m    294\u001b[0m                 )\n\u001b[0;32m    295\u001b[0m                 \u001b[0mwarnings\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwarn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mFutureWarning\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstacklevel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mstacklevel\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 296\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    297\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    298\u001b[0m         \u001b[1;32mreturn\u001b[0m \u001b[0mwrapper\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\application\\Anaconda3\\envs\\torch\\lib\\site-packages\\pandas\\io\\excel\\_base.py\u001b[0m in \u001b[0;36mread_excel\u001b[1;34m(io, sheet_name, header, names, index_col, usecols, squeeze, dtype, engine, converters, true_values, false_values, skiprows, nrows, na_values, keep_default_na, na_filter, verbose, parse_dates, date_parser, thousands, comment, skipfooter, convert_float, mangle_dupe_cols)\u001b[0m\n\u001b[0;32m    302\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    303\u001b[0m     \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mio\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mExcelFile\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 304\u001b[1;33m         \u001b[0mio\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mExcelFile\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mio\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mengine\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mengine\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    305\u001b[0m     \u001b[1;32melif\u001b[0m \u001b[0mengine\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mengine\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[0mio\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mengine\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    306\u001b[0m         raise ValueError(\n",
      "\u001b[1;32mD:\\application\\Anaconda3\\envs\\torch\\lib\\site-packages\\pandas\\io\\excel\\_base.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, path_or_buffer, engine)\u001b[0m\n\u001b[0;32m    865\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_io\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mstringify_path\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpath_or_buffer\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    866\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 867\u001b[1;33m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_reader\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engines\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mengine\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_io\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    868\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    869\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__fspath__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\application\\Anaconda3\\envs\\torch\\lib\\site-packages\\pandas\\io\\excel\\_xlrd.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, filepath_or_buffer)\u001b[0m\n\u001b[0;32m     20\u001b[0m         \u001b[0merr_msg\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m\"Install xlrd >= 1.0.0 for Excel support\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     21\u001b[0m         \u001b[0mimport_optional_dependency\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"xlrd\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mextra\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0merr_msg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 22\u001b[1;33m         \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     23\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     24\u001b[0m     \u001b[1;33m@\u001b[0m\u001b[0mproperty\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\application\\Anaconda3\\envs\\torch\\lib\\site-packages\\pandas\\io\\excel\\_base.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, filepath_or_buffer)\u001b[0m\n\u001b[0;32m    351\u001b[0m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbook\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mload_workbook\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    352\u001b[0m         \u001b[1;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 353\u001b[1;33m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbook\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mload_workbook\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    354\u001b[0m         \u001b[1;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbytes\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    355\u001b[0m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbook\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mload_workbook\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mBytesIO\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\application\\Anaconda3\\envs\\torch\\lib\\site-packages\\pandas\\io\\excel\\_xlrd.py\u001b[0m in \u001b[0;36mload_workbook\u001b[1;34m(self, filepath_or_buffer)\u001b[0m\n\u001b[0;32m     35\u001b[0m             \u001b[1;32mreturn\u001b[0m \u001b[0mopen_workbook\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfile_contents\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     36\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 37\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mopen_workbook\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     38\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     39\u001b[0m     \u001b[1;33m@\u001b[0m\u001b[0mproperty\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\application\\Anaconda3\\envs\\torch\\lib\\site-packages\\xlrd\\__init__.py\u001b[0m in \u001b[0;36mopen_workbook\u001b[1;34m(filename, logfile, verbosity, use_mmap, file_contents, encoding_override, formatting_info, on_demand, ragged_rows, ignore_workbook_corruption)\u001b[0m\n\u001b[0;32m    164\u001b[0m     \"\"\"\n\u001b[0;32m    165\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 166\u001b[1;33m     \u001b[0mfile_format\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0minspect_format\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfile_contents\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    167\u001b[0m     \u001b[1;31m# We have to let unknown file formats pass through here, as some ancient\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    168\u001b[0m     \u001b[1;31m# files that xlrd can parse don't start with the expected signature.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\application\\Anaconda3\\envs\\torch\\lib\\site-packages\\xlrd\\__init__.py\u001b[0m in \u001b[0;36minspect_format\u001b[1;34m(path, content)\u001b[0m\n\u001b[0;32m     58\u001b[0m     \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     59\u001b[0m         \u001b[0mpath\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mos\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexpanduser\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpath\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 60\u001b[1;33m         \u001b[1;32mwith\u001b[0m \u001b[0mopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpath\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"rb\"\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     61\u001b[0m             \u001b[0mpeek\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mread\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mPEEK_SIZE\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     62\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: './data/nba.xls'"
     ]
    }
   ],
   "source": [
    "df=pd.read_excel(\"./data/nba.xls\")\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
